﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Hydra.Shell.Attributes;
using Hydra.Shell.Implementations;

namespace Hydra.Shell.Interfaces
{
    [Guid("0000000C-0000-0000-C000-000000000046")]
    public interface IStream : ISequentialStream
    {
        void Read( byte[] pv, uint cb, out uint pcbRead);
        void Write( byte[] pv, uint cb, out uint pcbWritten);
        void Seek(long dlibMove, uint dwOrigin, long[] plibNewPosition);
        void SetSize(long libNewSize);
        void CopyTo(IStream pstm, long cb, long[] pcbRead, long[] pcbWritten);
        void Commit( uint grfCommitFlags);
        void Revert();
        void LockRegion( long libOffset, long cb, uint dwLockType);
        void UnlockRegion( long libOffset, long cb, uint dwLockType);
        void Stat(StorageStats[] pstatstg, uint grfStatFlag);
        void Clone(out IStream ppstm);
    }
}
